home *** CD-ROM | disk | FTP | other *** search
/ Group 42-Sells Out! - The Information Archive / Group 42 Sells Out (Group 42) (1996).iso / hack / tv / sat / euro / picblock.lst < prev    next >
File List  |  1995-04-25  |  22KB  |  428 lines

  1. 16c5x/xx Cross-Assembler V4.14 Released  Tue Apr 25 21:01:19 1995  Page 1
  2. PICBLOCK
  3.  
  4. Line   PC    Opcode
  5.  
  6. 0001               LIST P=16C84
  7. 0002               LIST F=INHX8M
  8. 0003               ;
  9. 0004               ;       Decoder data --> PORTB.0
  10. 0005               ;       Card data -----> PORTA.0
  11. 0006               ;
  12. 0007         0000  ORG 0
  13. 0008               ; Registers
  14. 0009         0000  IND0            EQU     0
  15. 0010         0001  TMR0            EQU     1
  16. 0011         0002  PC              EQU     2
  17. 0012         0003  STATUS          EQU     3
  18. 0013         0004  FSR             EQU     4
  19. 0014         0005  PORTA           EQU     5
  20. 0015         0006  PORTB           EQU     6
  21. 0016         0006  TRISB           EQU     6
  22. 0017         0008  EEDATA          EQU     8
  23. 0018         0009  EEADR           EQU     9
  24. 0019         0010  PCLATH          EQU     10
  25. 0020         0011  INTCON          EQU     11
  26. 0021               ;
  27. 0022         0012  VC_data         EQU     12
  28. 0023         0013  Byte_count      EQU     13
  29. 0024         0014  Bit_count       EQU     14
  30. 0025         0015  Cla             EQU     15
  31. 0026         0016  Ins             EQU     16
  32. 0027         0017  P1              EQU     17
  33. 0028         0018  P2              EQU     18
  34. 0029         0019  Count           EQU     19
  35. 0030         0020  Del             EQU     20
  36. 0031         0021  SN1             EQU     21
  37. 0032         0022  SN2             EQU     22
  38. 0033               ;
  39. 0034               ; Macros
  40. 0035         0001  SAME            EQU     1                
  41. 0036         0002  Z               EQU     2
  42. 0037               
  43. 0038   0000  2879          GOTO    START
  44. 0039               
  45. 0040               ;********************************************************
  46.                        **********************
  47. 0041               ;               Read byte from card or decoder.
  48. 0042               ;               Byte is passed on to decoder or card
  49. 0043               ;               or card to decoder, bit by bit.
  50. 0044               ;                       Exits with byte in reg. data.
  51. 0045               ;********************************************************
  52.                        **********************
  53. 0046               Read_byte 
  54. 0047   0001  1C06          BTFSS   PORTB,0         ; Wait for start bit - decoder
  55. 0048   0002  2828          GOTO    To_Card         ; Decoder to card com
  56. 0049   0003  1C05          BTFSS   PORTA,0         ; Wait for start bit - card
  57. 0050   0004  2806          GOTO    To_Dec          ; Card to decoder com
  58. 16c5x/xx Cross-Assembler V4.14 Released  Tue Apr 25 21:01:19 1995  Page 2
  59.  
  60. Line   PC    Opcode
  61.  
  62. 0051   0005  2801          GOTO    Read_byte       ; No start bit found
  63. 0052               To_Dec          
  64. 0053   0006  2072          CALL    Half_delay      ; Half-bit delay - center of st
  65.                        art bit
  66. 0054   0007  1683          BSF     STATUS,5        ; Change to page 1
  67. 0055   0008  1006          BCF     TRISB,0         ; PB.0 to output - to decoder
  68. 0056   0009  1283          BCF     STATUS,5        ; Back to page 0
  69. 0057   000A  1006          BCF     PORTB,0         ; Send start bit to decoder
  70. 0058   000B  1805          BTFSC   PORTA,0
  71. 0059   000C  2822          GOTO    Stop_cd
  72. 0060   000D  3008          MOVLW   8               ; Get number of data bits
  73. 0061   000E  0094          MOVWF   Bit_count       ; Store it
  74. 0062   000F  0192          CLRF    VC_data         ; Clear data register
  75. 0063   0010  2074          CALL    Bit_delay       ; 1-bit delay - centre of 1st b
  76.                        it
  77. 0064   0011  1003          BCF     STATUS,0        ; Clear carry bit
  78. 0065               Nxt_Cbit           
  79. 0066   0012  0D92          RLF     VC_data,SAME    ; Shift data bits left 1
  80. 0067   0013  1C05          BTFSS   PORTA,0         ; Read card i/o, is it high ?
  81. 0068   0014  2818          GOTO    Cbit_0          ; ...no
  82. 0069   0015  1406          BSF     PORTB,0         ; Card i/o high, so send decode
  83.                        r a 1
  84. 0070   0016  0A92          INCF    VC_data,SAME    ; Read a 1, so data LSB to 1
  85. 0071   0017  2819          GOTO    Rd_Cbit         ; Bit = 1
  86. 0072               Cbit_0          
  87. 0073   0018  1006          BCF     PORTB,0         ; Read a 0, so send decoder a 0
  88.                        
  89. 0074               Rd_Cbit           
  90. 0075   0019  2074          CALL    Bit_delay       ; Wait till centre of next bit
  91. 0076   001A  0B94          DECFSZ  Bit_count,SAME  ; All bits read yet ?  
  92. 0077   001B  2812          GOTO    Nxt_Cbit        ; ...no, get next bit
  93. 0078   001C  1C05          BTFSS   PORTA,0         ; 8 data bits read, read parity
  94.                         bit
  95. 0079   001D  1006          BCF     PORTB,0         ; Parity = 0, so send decoder a
  96.                         0
  97. 0080   001E  1805          BTFSC   PORTA,0         ; Read parity bit again
  98. 0081   001F  1406          BSF     PORTB,0         ; Parity = 1, so send decoder a
  99.                         1
  100. 0082   0020  2074          CALL    Bit_delay       ; Wait till centre of stop bit
  101. 0083   0021  0992          COMF    VC_data,SAME    ; Invert data
  102. 0084               Stop_cd
  103. 0085   0022  1406          BSF     PORTB,0         ; Send decoder stop bit
  104. 0086   0023  1683          BSF     STATUS,5        ; Change to page 1
  105. 0087   0024  1406          BSF     TRISB,0         ; PB.0 to input
  106. 0088   0025  1283          BCF     STATUS,5        ; Back to page 0
  107. 0089   0026  2074          CALL    Bit_delay
  108. 0090               
  109. 0091   0027  0008          RETURN
  110. 0092               
  111. 0093               ;********************************************************
  112.                        **********************
  113. 0094               ;               Decoder to card
  114. 0095               ;********************************************************
  115.                        **********************
  116. 0096   0028  2072  To_Card         CALL    Half_delay      ; Half-bit delay 
  117.                        - center of start bit
  118. 0097   0029  1683          BSF     STATUS,5        ; Change to page 1          
  119. 0098   002A  1005          BCF     PORTA,0         ; PA.0 to output - to card   
  120. 0099   002B  0000          NOP
  121. 0100   002C  1283          BCF     STATUS,5        ; Back to page 0           
  122. 16c5x/xx Cross-Assembler V4.14 Released  Tue Apr 25 21:01:19 1995  Page 3
  123.  
  124. Line   PC    Opcode
  125.  
  126. 0101   002D  1005          BCF     PORTA,0         ; Send start bit to card  
  127. 0102   002E  1806          BTFSC   PORTB,0
  128. 0103   002F  2847          GOTO    Stop_dc
  129. 0104   0030  3008          MOVLW   8               ; Get number of data bits  
  130. 0105   0031  0094          MOVWF   Bit_count       ; Store it   
  131. 0106   0032  0192          CLRF    VC_data         ; Clear data register 
  132. 0107   0033  2074          CALL    Bit_delay       ; 1-bit delay - centre of 1st b
  133.                        it   
  134. 0108   0034  1003          BCF     STATUS,0        ; Clear carry bit          
  135. 0109               Nxt_Dbit           
  136. 0110   0035  0D92          RLF     VC_data,SAME    ; Shift data bits left 1      
  137. 0111   0036  0000          NOP
  138. 0112   0037  1C06          BTFSS   PORTB,0         ; Read decoder i/o, is it high 
  139.                        ?
  140. 0113   0038  283C          GOTO    Dbit_0          ; ... no         
  141. 0114   0039  1405          BSF     PORTA,0         ; Decoder i/o high, so send car
  142.                        d a 1    
  143. 0115   003A  0A92          INCF    VC_data,SAME    ; Read a 1, so data LSB to 1  
  144. 0116   003B  283D          GOTO    Rd_Dbit         ; Next bit      
  145. 0117               Dbit_0          
  146. 0118   003C  1005          BCF     PORTA,0         ; Read a 0, so send card a 0   
  147.                        
  148. 0119               Rd_Dbit         
  149. 0120   003D  2074          CALL    Bit_delay       ; Wait till centre of next bit 
  150.                         
  151. 0121   003E  0000          NOP
  152. 0122   003F  0B94          DECFSZ  Bit_count,SAME  ; All bits read yet ? 
  153. 0123   0040  2835          GOTO    Nxt_Dbit        ; .. no, get next bit 
  154. 0124   0041  1C06          BTFSS   PORTB,0         ; 8 data bits read, read parity
  155.                         bit  
  156. 0125   0042  1005          BCF     PORTA,0         ; Parity = 0, so send decoder a
  157.                         0  
  158. 0126   0043  1806          BTFSC   PORTB,0         ; Read parity bit again      
  159. 0127   0044  1405          BSF     PORTA,0         ; Parity = 1, so send card a 1 
  160.                            
  161. 0128   0045  2074          CALL    Bit_delay       ; Wait till centre of stop bit 
  162.                        
  163. 0129   0046  0992          COMF    VC_data,SAME    ; Invert data    
  164. 0130               Stop_dc                
  165. 0131   0047  1405          BSF     PORTA,0         ; Send card stop bit   
  166. 0132   0048  1683          BSF     STATUS,5        ; Change to page 1             
  167.                        
  168. 0133   0049  1405          BSF     PORTA,0         ; PA.0 to input   
  169. 0134   004A  1283          BCF     STATUS,5        ; Back to page 0            
  170. 0135   004B  0008          RETURN
  171. 0136               
  172. 0137               ;********************************************************
  173.                        **********************
  174. 0138               ;               Send 00 in place of remaining E0 string
  175. 0139               ;********************************************************
  176.                        **********************
  177. 0140               Send_00         
  178. 0141   004C  1806          BTFSC   PORTB,0         ; Wait for start bit from decod
  179.                        er
  180. 0142   004D  284C          GOTO    Send_00
  181. 0143   004E  2072          CALL    Half_delay      ; Half-bit delay - center of st
  182.                        art bit
  183. 0144   004F  1683          BSF     STATUS,5        ; Change to page 1          
  184. 0145   0050  1005          BCF     PORTA,0         ; PA.0 to output - to card   
  185. 0146   0051  1085          BCF     PORTA,1
  186. 0147   0052  1283          BCF     STATUS,5        ; Back to page 0           
  187. 0148   0053  1005          BCF     PORTA,0         ; Send start bit to card  
  188. 0149                       
  189. 0150   0054  1806          BTFSC   PORTB,0
  190. 16c5x/xx Cross-Assembler V4.14 Released  Tue Apr 25 21:01:19 1995  Page 4
  191.  
  192. Line   PC    Opcode
  193.  
  194. 0151   0055  286D          GOTO    Stop_dc0
  195. 0152                       
  196. 0153   0056  3008          MOVLW   8               ; Get number of data bits  
  197. 0154   0057  0094          MOVWF   Bit_count       ; Store it   
  198. 0155   0058  0000          NOP 
  199. 0156   0059  2074          CALL    Bit_delay       ; 1-bit delay - centre of 1st b
  200.                        it   
  201. 0157   005A  1003          BCF     STATUS,0        ; Clear carry bit          
  202. 0158   005B  0000  NEXT0           NOP                     ; NOPs to preserv
  203.                        e bit timing   
  204. 0159   005C  1485          BSF     PORTA,1         ; Scope monitor bit
  205. 0160   005D  0000          NOP      
  206. 0161   005E  0000          NOP         
  207. 0162   005F  1405          BSF     PORTA,0         ; Send card a 0 ( inverse )    
  208.                        
  209. 0163   0060  0000          NOP
  210. 0164   0061  0000          NOP   
  211. 0165   0062  0000          NOP   
  212. 0166   0063  2074          CALL    Bit_delay       ; Wait till centre of next bit 
  213.                         
  214. 0167   0064  1085          BCF     PORTA,1         ; For scope
  215. 0168   0065  0B94          DECFSZ  Bit_count,SAME  ; All bits read yet ? 
  216. 0169   0066  285B          GOTO    NEXT0           ; .. no, get next bit 
  217. 0170   0067  0000          NOP
  218. 0171   0068  0000          NOP  
  219. 0172   0069  0000          NOP   
  220. 0173   006A  0000          NOP     
  221. 0174   006B  2074          CALL    Bit_delay       ; Wait till centre of stop bit 
  222.                        
  223. 0175   006C  0000          NOP 
  224. 0176               Stop_dc0               
  225. 0177   006D  1405          BSF     PORTA,0         ; Send card stop bit   
  226. 0178   006E  1683          BSF     STATUS,5        ; Change to page 1             
  227.                        
  228. 0179   006F  1405          BSF     PORTA,0         ; PA.0 to input   
  229. 0180   0070  1283          BCF     STATUS,5        ; Back to page 0            
  230. 0181   0071  0008          RETURN
  231. 0182               
  232. 0183               ;********************************************************
  233.                        **********************
  234. 0184               ;               Delay for 48uS or 89uS
  235. 0185               ;********************************************************
  236.                        **********************
  237. 0186               Half_delay           
  238. 0187   0072  300E          MOVLW   0xE
  239. 0188   0073  2875          GOTO    Delay
  240. 0189               
  241. 0190               Bit_delay       
  242. 0191   0074  301A          MOVLW   0x1A
  243. 0192               Delay           
  244. 0193   0075  00A0          MOVWF   Del
  245. 0194               Del_loop           
  246. 0195   0076  0BA0          DECFSZ  Del,SAME
  247. 0196   0077  2876          GOTO    Del_loop
  248. 0197   0078  0008          RETURN
  249. 0198               ;********************************************************
  250.                        *********************
  251. 0199               ;                                 Start of program 
  252. 0200               ;********************************************************
  253.                        *********************
  254. 16c5x/xx Cross-Assembler V4.14 Released  Tue Apr 25 21:01:19 1995  Page 5
  255.  
  256. Line   PC    Opcode
  257.  
  258. 0201   0079  0195  START           CLRF    Cla
  259. 0202   007A  0196          CLRF    Ins
  260. 0203   007B  0197          CLRF    P1
  261. 0204   007C  0198          CLRF    P2
  262. 0205               
  263. 0206               ;******************************** Main program loop *****
  264.                        *********************
  265. 0207               MAIN
  266. 0208   007D  0816          MOVF    Ins,W
  267. 0209   007E  0095          MOVWF   Cla
  268. 0210   007F  0817          MOVF    P1,W
  269. 0211   0080  0096          MOVWF   Ins
  270. 0212   0081  0818          MOVF    P2,W
  271. 0213   0082  0097          MOVWF   P1
  272. 0214   0083  2001          CALL    Read_byte
  273. 0215   0084  0812          MOVF    VC_data,W
  274. 0216   0085  0098          MOVWF   P2
  275. 0217   0086  1D03          BTFSS   STATUS,Z       ; Check P2 = 0
  276. 0218   0087  287D          GOTO    MAIN
  277. 0219   0088  0815          MOVF    Cla,W
  278. 0220   0089  3A53          XORLW   0x53            ; Check for Vcrypt class code
  279. 0221   008A  1D03          BTFSS   STATUS,Z
  280. 0222   008B  287D          GOTO    MAIN            ; Loop round until class 53h fo
  281.                        und
  282. 0223   008C  0897          MOVF    P1,SAME
  283. 0224   008D  1D03          BTFSS   STATUS,Z        ; Check for P1 = 0
  284. 0225   008E  287D          GOTO    MAIN            ; Not header - try again
  285. 0226   008F  2001          CALL    Read_byte       ; Read byte count
  286. 0227   0090  0812          MOVF    VC_data,W
  287. 0228   0091  0093          MOVWF   Byte_count      ; Store byte count
  288. 0229   0092  0A93          INCF    Byte_count,SAME
  289. 0230   0093  2001          CALL    Read_byte       ; Transfer ins back
  290. 0231   0094  3074          MOVLW   0x74            ; Instruction 74h ?
  291. 0232   0095  0616          XORWF   Ins,W
  292. 0233   0096  1903          BTFSC   STATUS,Z
  293. 0234   0097  2899          GOTO    Ins74
  294. 0235   0098  287D          GOTO    MAIN
  295. 0236               
  296. 0237               ;************** Instruction code 74h - message from stati
  297.                        on *****************
  298. 0238               Ins74          
  299. 0239   0099  301F          MOVLW   0x1F
  300. 0240   009A  0099          MOVWF   Count
  301. 0241   009B  2001          CALL    Read_byte       ; Read 1st byte
  302. 0242   009C  1D92          BTFSS   VC_data,3       ; Check for E8 or E0 1st byte
  303. 0243   009D  28A2          GOTO    block
  304. 0244               No_block        
  305. 0245   009E  2001          CALL    Read_byte       ; Read/send remaining 31 bytes
  306. 0246   009F  0B99          DECFSZ  Count,SAME
  307. 0247   00A0  289E          GOTO    No_block
  308. 0248   00A1  287D          GOTO    MAIN
  309. 0249               block                
  310. 0250   00A2  300A          MOVLW   0xA
  311. 16c5x/xx Cross-Assembler V4.14 Released  Tue Apr 25 21:01:19 1995  Page 6
  312.  
  313. Line   PC    Opcode
  314.  
  315. 0251   00A3  0099          MOVWF   Count
  316. 0252               block10
  317. 0253   00A4  2001          CALL    Read_byte       ; Read/send 1st 10 bytes
  318. 0254   00A5  0B99          DECFSZ  Count,SAME
  319. 0255   00A6  28A4          GOTO    block10
  320. 0256   00A7  2001          CALL    Read_byte       ; Get E0 S/N 5th digit (1)
  321. 0257   00A8  0812          MOVF    VC_data,W
  322. 0258   00A9  00A1          MOVWF   SN1
  323. 0259   00AA  2001          CALL    Read_byte       ; Get E0 S/N 5th digit (2)
  324. 0260   00AB  0812          MOVF    VC_data,W
  325. 0261   00AC  00A2          MOVWF   SN2
  326. 0262   00AD  2001          CALL    Read_byte       ; Get E0 S/N 5th digit (3)
  327. 0263   00AE  0812          MOVF    VC_data,W
  328. 0264   00AF  06A2          XORWF   SN2,SAME
  329. 0265   00B0  1D03          BTFSS   STATUS,Z        ; Does digit 3 = digit 2 ?
  330. 0266   00B1  28BB          GOTO    E0_ok
  331. 0267   00B2  06A1          XORWF   SN1,SAME
  332. 0268   00B3  1D03          BTFSS   STATUS,Z        ; Does digit 3 = digit 1 ?
  333. 0269   00B4  28BB          GOTO    E0_ok
  334. 0270                                   ; 3 consecutive bytes are the same
  335. 0271   00B5  3012          MOVLW   0x12            ; 18 bytes left in E0 string
  336. 0272   00B6  0099          MOVWF   Count
  337. 0273               Kill_E0
  338. 0274   00B7  204C          CALL    Send_00         ; Kill remaining 18 bytes
  339. 0275   00B8  0B99          DECFSZ  Count
  340. 0276   00B9  28B7          GOTO    Kill_E0
  341. 0277   00BA  287D          GOTO    MAIN
  342. 0278               E0_ok
  343. 0279   00BB  3012          MOVLW   0x12            ; 18 bytes left in E0 string
  344. 0280   00BC  0099          MOVWF   Count
  345. 0281               No_kill
  346. 0282   00BD  2001          CALL    Read_byte       ; Pass on remaining 18 bytes
  347. 0283   00BE  0B99          DECFSZ  Count
  348. 0284   00BF  28BD          GOTO    No_kill
  349. 0285   00C0  287D          GOTO    MAIN
  350. 0286               
  351. 0287         0000  END
  352. 16c5x/xx Cross-Assembler V4.14 Released  Tue Apr 25 21:01:19 1995  Page 7
  353.  
  354.  
  355.  
  356. Cross-Reference Listing
  357. LABEL        VALUE        DEFN        REFERENCES
  358. Bit_count    20           24          24     61     76     105    122    154    
  359.                                       168    
  360. Bit_delay    116          190         63     75     82     89     107    120    
  361.                                       128    156    166    174    190    
  362. Byte_count   19           23          23     228    229    
  363. Cbit_0       24           72          68     72     
  364. Cla          21           25          25     201    209    219    
  365. Count        25           29          29     240    246    251    254    272    
  366.                                       275    280    283    
  367. Dbit_0       60           117         113    117    
  368. Del          32           30          30     193    195    
  369. Del_loop     118          194         194    196    
  370. Delay        117          192         188    192    
  371. E0_ok        187          278         266    269    278    
  372. EEADR        9            18          18     
  373. EEDATA       8            17          17     
  374. FSR          4            13          13     
  375. Half_delay   114          186         53     96     143    186    
  376. IND0         0            9           9      
  377. INTCON       17           20          20     
  378. Ins          22           26          26     202    208    211    232    
  379. Ins74        153          238         234    238    
  380. Kill_E0      183          273         273    276    
  381. MAIN         125          207         207    218    222    225    235    248    
  382.                                       277    285    
  383. NEXT0        91           158         158    169    
  384. No_block     158          244         244    247    
  385. No_kill      189          281         281    284    
  386. Nxt_Cbit     18           65          65     77     
  387. Nxt_Dbit     53           109         109    123    
  388. P1           23           27          27     203    210    213    223    
  389. P2           24           28          28     204    212    216    
  390. PC           2            11          11     
  391. PCLATH       16           19          19     
  392. PORTA        5            14          14     49     58     67     78     80     
  393.                                       98     101    114    118    125    127    
  394.                                       131    133    145    146    148    159    
  395.                                       162    167    177    179    
  396. PORTB        6            15          15     47     57     69     73     79     
  397.                                       81     85     102    112    124    126    
  398.                                       141    150    
  399. Rd_Cbit      25           74          71     74     
  400. Rd_Dbit      61           119         116    119    
  401. Read_byte    1            46          46     51     214    226    230    241    
  402.                                       245    253    256    259    262    282    
  403. SAME         1            35          35     66     70     76     83     110    
  404.                                       115    122    129    168    195    223    
  405.                                       229    246    254    264    267    
  406. SN1          33           31          31     258    267    
  407. SN2          34           32          32     261    264    
  408. START        121          201         38     201    
  409. STATUS       3            12          12     54     56     64     86     88     
  410.                                       97     100    108    132    134    144    
  411.                                       147    157    178    180    217    221    
  412.                                       224    233    265    268    
  413. Send_00      76           140         140    142    274    
  414. Stop_cd      34           84          59     84     
  415. Stop_dc      71           130         103    130    
  416. Stop_dc0     109          176         151    176    
  417. TMR0         1            10          10     
  418. TRISB        6            16          16     55     87     
  419. To_Card      40           96          48     96     
  420. To_Dec       6            52          50     52     
  421. VC_data      18           22          22     62     66     70     83     106    
  422.                                       110    115    129    215    227    242    
  423.                                       257    260    263    
  424. Z            2            36          36     217    221    224    233    265    
  425.                                       268    
  426. block        162          249         243    249    
  427. block10      164          252         252    255    
  428.